home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-09-28 | 5.9 KB | 251 lines |
- '***************************
- '* AMOS Professional *
- '* *
- '* MENUS 9 *
- '* * FULL EXAMPLE
- '* (c) Europress Software *
- '* *
- '* Ronnie Simpson *
- '***************************
- '
- '-------------------------------------------
- '
- ' The following program is an example of how a menu may be used as the
- ' only user input for a full program. It uses a menu loaded from a bank
- ' which was defined in the previous tutorial MENUS_8.
- '
- ' Use arrow keys to scroll info bar.
- ' Use background mode to select background colours of pattern fill
- '
- '-------------------------------------------
- Global M,P,F,B,O,T,S,W,H
- '
- Rem *** Open and position the 3 screens required and load bobs
- '
- Screen Open 3,320,40,32,Lowres : Flash Off : Curs Off : Cls 0
- Screen Display 3,,220,, : H=220
- Screen Open 1,320,200,32,Lowres
- Screen Open 0,320,200,32,Lowres
- Load "AMOSPro_Tutorial:Objects/Menu_Bobs.Abk"
- Palette 0,$BDF,$FF,$FF0,$F0F,$F0,$F,$F00,$F70,$7F,$500,$50,$5,$900,$90,$9,$950,$59,$222,$333,$444,$555,$666,$777,$888,$999,$AAA,$BBB,$CCC,$DDD,$EEE,$FFF
- F=4 : B=0 : O=6 : M=1 : P=1 : T=True
- Flash Off : Curs Off : Cls 0 : Pen 4 : Paper 0 : Ink F,B,O : NC=32
- '
- Rem *** Load menu data to bank
- '
- Load "AMOSPro_Tutorial:Tutorials/Menus/Data.Menu",6
- '
- Bank To Menu 6
- Erase 6
- '
- Menu On
- On Menu Proc PI,MO,CO,DR,PA
- On Menu On
- '
- Change Mouse 2
- '
- MARKUP
- '
- Do
- If Key State(77) and H<300 Then Inc H : Screen Display 3,,H,,
- If Key State(76) and H>20 Then Dec H : Screen Display 3,,H,,
- If Mouse Key=1 Then Screen To Front 0 : Proc ACT[X Screen(X Mouse),Y Screen(Y Mouse)]
- Loop
- '
- Procedure PI
- On Choice(2) Gosub P1,P2,P3,P4,P5
- On Menu On : MARKUP : Pop Proc
- P1:
- F$=Fsel$("AmosPro_Examples:IFF/*.Iff","","LOAD AN IFF PICTURE")
- If F$>""
- Load Iff F$,1 : Load Iff F$,0
- Limit Mouse 128,42 To 127+Screen Width,41+Screen Height
- End If
- NC=Screen Colour
- If NC=4096 Then NC=16
- If NC=64 Then NC=32
- For N=1 To NC : Menu Active(3,N) : Next
- If NC<32
- For N=NC+1 To 32 : Menu Inactive(3,N) : Next
- End If
- Return
- P2: F$=Fsel$("*.Iff","","SAVE AN IFF PICTURE")
- If F$>""
- Save Iff F$
- End If
- Return
- P3:
- Cls B
- Return
- P4:
- Screen Copy 1 To 0
- Return
- P5: Edit
- End Proc
- '
- Procedure MO
- On Choice(2) Gosub M1,M2,M3,M4,M5
- On Menu On : MARKUP : Pop Proc
- M1:
- T=True
- Return
- M2:
- T=False
- Return
- M3:
- Set Paint 1 : S=True
- Return
- M4:
- Set Paint 0 : S=False
- Return
- M5:
- O=Choice(3)-1
- Ink ,,O
- Return
- End Proc
- '
- Procedure CO
- C=Choice(2) : Dec C
- If T Then Ink C : Pen C : F=C : Else Ink ,C : Paper C : B=C
- On Menu On : MARKUP
- End Proc
- '
- Procedure DR
- M=Choice(2)
- Change Mouse 2
- If M=3 Then Change Mouse 21
- If M=8 Then Change Mouse 22
- On Menu On : MARKUP
- End Proc
- '
- Procedure PA
- On Choice(2) Gosub 1,2,3
- On Menu On : MARKUP : Pop Proc
- 1
- Set Pattern P : W=True
- Return
- 2
- Set Pattern 0 : W=False : P=0
- Return
- 3
- P=Choice(3)
- Return
- End Proc
- '
- Procedure ACT[X,Y]
- Screen Copy 0 To 1 : Ink F,B,O
- On M Gosub A1,A2,A3,A4,A5,A6,A7,A8
- MARKUP : Pop Proc
- A1:
- While Mouse Key=1
- Plot X Screen(X Mouse),Y Screen(Y Mouse)
- Plot X Screen(X Mouse)+1,Y Screen(Y Mouse)
- Wend
- Return
- A2:
- Gr Writing 2
- While Mouse Key=1
- X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
- Draw X,Y To X2,Y2 : Draw X,Y To X2,Y2
- Wend
- Gr Writing 1 : Draw X,Y To X2,Y2
- Return
- A3:
- Hide : Wait 5
- Sprite 2,X Hard(X),Y Hard(Y),18
- Clear Key : Gr Writing 0
- Repeat
- T$=Inkey$
- Exit If T$=Chr$(13)
- If T$>""
- Add X,8 : Sprite 2,X Hard(X),,
- If X>632
- X=0 : Add Y,8
- End If
- Text X-8,Y+6,T$
- End If
- Until Mouse Key
- Sprite 2,,500, : Gr Writing 1 : Show
- Return
- A4:
- Gr Writing 2
- While Mouse Key=1
- R1=Abs(X-X Screen(X Mouse)) : If Screen Width=640 Then R1=R1/2
- R2=Abs(Y-Y Screen(Y Mouse)) : R=Max(R1,R2) : If R=0 Then R=1
- Circle X,Y,R : Circle X,Y,R
- Wend
- Gr Writing 1
- Circle X,Y,R
- Return
- A5:
- Gr Writing 2
- While Mouse Key=1
- R1=Abs(X-X Screen(X Mouse)) : R2=Abs(Y-Y Screen(Y Mouse))
- If R1=0 Then R1=1
- If R2=0 Then R2=1
- Ellipse X,Y,R1,R2 : Ellipse X,Y,R1,R2
- Wend
- Gr Writing 1
- Ellipse X,Y,R1,R2
- Return
- A6:
- Gr Writing 2
- While Mouse Key=1
- X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
- Box X,Y To X2,Y2 : Box X,Y To X2,Y2
- Wend
- Gr Writing 1
- Box X,Y To X2,Y2
- Return
- A7:
- Gr Writing 2
- While Mouse Key=1
- X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse)
- Box X,Y To X2,Y2 : Box X,Y To X2,Y2
- Wend
- Gr Writing 1 : Set Pattern P
- If X=X2 Then Goto MISS
- If Y=Y2 Then Goto MISS
- Bar X,Y To X2,Y2
- MISS:
- Return
- A8:
- While Mouse Key=1
- Wend : Set Pattern P
- Paint X,Y
- Return
- End Proc
- Procedure MARKUP
- Screen 3 : Screen To Front 3 : Get Palette 0 : Colour 31,$4 : Cls 31
- Ink 2 : Draw 0,0 To 319,0 : Draw 0,39 To 320,39
- Pen 2 : Paper 31
- Locate 0,1 : Print "Foreground colour"
- Locate 0,2 : Print "Background colour"
- Locate 0,3 : Print " Outline colour"
- Set Pattern 0
- Ink 2 : Box 140,24 To 148,32 : Box 140,16 To 148,24 : Box 140,8 To 148,16
- Ink O : Bar 141,25 To 147,31 : Ink B : Bar 141,17 To 147,23 : Ink F : Bar 141,9 To 147,15
- Locate 20,2 : Ink F,B,O : Pen 25
- If W
- Set Pattern P : Bar 244,16 To 258,23 : Print "Pattern ON";
- Else
- Ink 31 : Set Pattern 0 : Bar 244,16 To 258,23 : Print "Pattern OFF";
- End If
- Locate 20,3 : Pen 23
- If S
- Print "Outline ON ";
- Else
- Print "Outline OFF";
- End If
- Locate 20,1 : Pen 27
- If T
- Print "Select= Foreground"
- Else
- Print "Select= Background"
- End If
- Ink 2 : Box 270,17 To 320,39
- Draw 155,0 To 155,40
- Ink 2,31 : Text 280,25,"Mode"
- Paste Bob 274,28,M+1
- Screen 0
- End Proc